/**
 * 前端业务常量
 * 与后端 models/constants.go 保持一致
 */

// ==================== 用户角色常量 ====================

export const ROLE_USER = 'user'
export const ROLE_MODERATOR = 'moderator'
export const ROLE_ADMIN = 'admin'

// 所有有效角色
export const VALID_ROLES = [
  ROLE_USER,
  ROLE_MODERATOR,
  ROLE_ADMIN
]

// 角色显示名称映射（后备方案）
export const ROLE_LABELS = {
  [ROLE_USER]: '普通用户',
  [ROLE_MODERATOR]: '版主',
  [ROLE_ADMIN]: '管理员'
}

// 角色样式类映射
export const ROLE_CLASSES = {
  [ROLE_ADMIN]: 'role-admin',
  [ROLE_MODERATOR]: 'role-moderator',
  [ROLE_USER]: 'role-user'
}

// ==================== 用户状态常量 ====================

export const STATUS_ACTIVE = 'active'
export const STATUS_BANNED = 'banned'
export const STATUS_DELETED = 'deleted'

// 所有有效状态（可操作的状态）
export const VALID_STATUSES = [
  STATUS_ACTIVE,
  STATUS_BANNED
]

// 状态显示名称映射
export const STATUS_LABELS = {
  [STATUS_ACTIVE]: '正常',
  [STATUS_BANNED]: '封禁',
  [STATUS_DELETED]: '已删除'
}

// 状态样式类映射
export const STATUS_CLASSES = {
  [STATUS_ACTIVE]: 'status-active',
  [STATUS_BANNED]: 'status-banned',
  [STATUS_DELETED]: 'status-deleted'
}

// ==================== 好友状态常量 ====================

export const FRIEND_STATUS_ACTIVE = 'active'
export const FRIEND_STATUS_BLOCKED = 'blocked'
export const FRIEND_STATUS_DELETED = 'deleted'

// ==================== 辅助函数 ====================

/**
 * 验证角色是否有效
 * @param {string} role - 角色值
 * @returns {boolean}
 */
export function isValidRole(role) {
  return VALID_ROLES.includes(role)
}

/**
 * 验证状态是否有效
 * @param {string} status - 状态值
 * @returns {boolean}
 */
export function isValidStatus(status) {
  return VALID_STATUSES.includes(status)
}

/**
 * 获取角色显示名称
 * @param {string} role - 角色值
 * @param {Array} dynamicRoles - 从后端获取的角色列表（优先）
 * @returns {string}
 */
export function getRoleLabel(role, dynamicRoles = []) {
  // 优先从动态角色列表中查找
  const foundRole = dynamicRoles.find(r => r.value === role)
  if (foundRole) {
    return foundRole.label
  }
  
  // 后备：使用静态映射
  return ROLE_LABELS[role] || '未知角色'
}

/**
 * 获取状态显示名称
 * @param {string} status - 状态值
 * @returns {string}
 */
export function getStatusLabel(status) {
  return STATUS_LABELS[status] || '未知状态'
}

/**
 * 获取角色样式类
 * @param {string} role - 角色值
 * @returns {string}
 */
export function getRoleClass(role) {
  return ROLE_CLASSES[role] || 'role-user'
}

/**
 * 获取状态样式类
 * @param {string} status - 状态值
 * @returns {string}
 */
export function getStatusClass(status) {
  return STATUS_CLASSES[status] || 'status-active'
}

// ==================== 默认选项（用于初始化） ====================

/**
 * 默认角色选项（后备方案）
 */
export const DEFAULT_ROLE_OPTIONS = [
  { value: ROLE_USER, label: ROLE_LABELS[ROLE_USER], description: '基础用户权限' },
  { value: ROLE_MODERATOR, label: ROLE_LABELS[ROLE_MODERATOR], description: '部分管理权限' },
  { value: ROLE_ADMIN, label: ROLE_LABELS[ROLE_ADMIN], description: '完整管理权限' }
]

/**
 * 默认状态选项
 */
export const DEFAULT_STATUS_OPTIONS = [
  { value: STATUS_ACTIVE, label: STATUS_LABELS[STATUS_ACTIVE] },
  { value: STATUS_BANNED, label: STATUS_LABELS[STATUS_BANNED] }
]

export default {
  // 角色常量
  ROLE_USER,
  ROLE_MODERATOR,
  ROLE_ADMIN,
  VALID_ROLES,
  ROLE_LABELS,
  ROLE_CLASSES,
  
  // 状态常量
  STATUS_ACTIVE,
  STATUS_BANNED,
  STATUS_DELETED,
  VALID_STATUSES,
  STATUS_LABELS,
  STATUS_CLASSES,
  
  // 好友状态
  FRIEND_STATUS_ACTIVE,
  FRIEND_STATUS_BLOCKED,
  FRIEND_STATUS_DELETED,
  
  // 辅助函数
  isValidRole,
  isValidStatus,
  getRoleLabel,
  getStatusLabel,
  getRoleClass,
  getStatusClass,
  
  // 默认选项
  DEFAULT_ROLE_OPTIONS,
  DEFAULT_STATUS_OPTIONS
} 